home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / mus / edit / PlotCMD.lha / plotcmd / preset_grabtrack.omed < prev    next >
Text File  |  1999-02-23  |  3KB  |  113 lines

  1. /*
  2.     ARexx script for use with PlotCMD
  3.     (PlotCMD is a MUIRexx script for use with OctaMED Soundstudio)
  4.     Read the PlotCMD doc for details
  5. */
  6.  
  7. ADDRESS OCTAMED_REXX
  8. OPTIONS RESULTS
  9.  
  10. WI_REQUEST '"Data format?"' '"0-40|0-7F|0-FF|80-0-7F"' VAR form
  11.  
  12. ED_GETNUMLINES VAR len
  13.  
  14. SELECT
  15.    WHEN (form==1) THEN CALL testform(len, '40'x)    /* check level ranges */
  16.    WHEN (form==2) THEN CALL testform(len, '7F'x)
  17.    OTHERWISE
  18. END
  19.  
  20. IN_SELECT LAST
  21. IN_SETTYPE SAMPLE
  22. SA_CHANGESIZE SIZE len CLEAR
  23.  
  24. SELECT
  25.    WHEN (form==1) THEN CALL applyform1(len)
  26.    WHEN (form==2) THEN CALL applyform2(len)
  27.    WHEN (form==3) THEN CALL applyform3(len)
  28.    WHEN (form==0) THEN CALL applyform4(len)
  29.    OTHERWISE
  30. END
  31.  
  32. SA_REFRESH
  33.  
  34. EXIT
  35.  
  36.  
  37.  
  38.  
  39. /*              P R O C E D U R E S
  40. -----------------------------------------------------*/
  41.  
  42. testform: PROCEDURE
  43.    len=ARG(1)
  44.    max=c2d(ARG(2))
  45.    DO i=0 TO len-1
  46.       ED_GETDATA LINE i CMDLVL
  47.       IF (RESULT>max) THEN DO
  48.          WI_REQUEST '"CMD levels out of range!"' '"OK"'
  49.          EXIT
  50.       END
  51.    END
  52. return
  53.  
  54. applyform1: PROCEDURE
  55.    PARSE ARG len
  56.    DO i=0 TO len-1
  57.       ED_GETDATA LINE i CMDLVL
  58.       calcval=1023*RESULT-32736
  59.       SA_SETSAMPLE OFFSET i VALUE calcval
  60.    END
  61. return
  62.  
  63. applyform2: PROCEDURE
  64.    PARSE ARG len
  65.    oldval=-32767
  66.  
  67.    DO i=0 TO len-1
  68.       ED_GETDATA LINE i CMDLVL ; level=RESULT
  69.       ED_GETDATA LINE i CMDNUM ; nr=RESULT
  70.       IF (level==0 & nr==0) THEN
  71.          calcval=oldval                /* 0000 detected => use last value */
  72.       ELSE
  73.          calcval=511*level-32193
  74.       SA_SETSAMPLE OFFSET i VALUE calcval
  75.       oldval=calcval
  76.    END
  77. return
  78.  
  79. applyform3: PROCEDURE
  80.    PARSE ARG len
  81.    oldval=-32767
  82.  
  83.    DO i=0 TO len-1
  84.       ED_GETDATA LINE i CMDLVL ; level=RESULT
  85.       ED_GETDATA LINE i CMDNUM ; nr=RESULT
  86.       IF (level==0 & nr==0) THEN
  87.          calcval=oldval                /* 0000 detected => use last value */
  88.       ELSE
  89.          calcval=255*level-32640
  90.       SA_SETSAMPLE OFFSET i VALUE calcval
  91.       oldval=calcval
  92.    END
  93. return
  94.  
  95. applyform4: PROCEDURE        /* (signed values) */
  96.    PARSE ARG len
  97.    oldval=0
  98.  
  99.    DO i=0 TO len-1
  100.       ED_GETDATA LINE i CMDLVL ; level=RESULT
  101.       ED_GETDATA LINE i CMDNUM ; nr=RESULT
  102.       IF (level==0 & nr==0) THEN
  103.          calcval=oldval                /* 0000 detected => use last value */
  104.       ELSE
  105.          IF (level<128) THEN            /*  0 - 7F <=>  0 -  127 */
  106.             calcval=256*level
  107.          ELSE                    /* FF - 80 <=> -1 - -128 */
  108.             calcval=256*level-2*32767
  109.       SA_SETSAMPLE OFFSET i VALUE calcval
  110.       oldval=calcval
  111.    END
  112. return
  113.